package com.autumn.xa.a.demo;

import net.sourceforge.pinyin4j.PinyinHelper;
import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
import net.sourceforge.pinyin4j.format.HanyuPinyinVCharType;
import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;

/**
 * ClassName: Pinyin
 *
 * @Description:
 * @Author: wangqiuyang
 * @Date: 2022/6/16 10:30 上午
 * History:
 * <author>          <time>          <version>          <desc>
 * wangqiuyang    2022/6/16 10:30 上午   @Version 1.0        描述
 */
public class Pinyin {

    private static final String[] str = {
            "联营",
            "股份制企业_非法人_",
            "外商投资企业",
            "有限责任公司",
            "有限责任公司_中外合资_",
            "有限责任公司_中外合作_",
            "有限责任公司_外商合资_",
            "有限责任公司_外国自然人独资_",
            "有限责任公司_外国法人独资_",
            "有限责任公司_外国非法人经济组织独资_",
            "其他",
            "股份有限公司",
            "股份有限公司_中外合资_未上市_",
            "股份有限公司_中外合资_上市_",
            "股份有限公司_外商合资_未上市_",
            "股份有限公司_外商合资_上市_",
            "其他",
            "非公司",
            "非公司外商投资企业_中外合作_",
            "其他",
            "外商投资合伙企业",
            "普通合伙企业",
            "特殊普通合伙企业",
            "有限合伙企业",
            "其他",
            "外商投资企业分支机构",
            "分公司",
            "非公司外商投资企业分支机构",
            "办事处",
            "外商投资合伙企业分支机构",
            "其他",
            "台_港_澳投资企业",
            "有限责任公司",
            "有限责任公司_台港澳与境内合资_",
            "有限责任公司_台港澳与境内合作_",
            "有限责任公司_台港澳合资_",
            "有限责任公司_台港澳自然人独资_",
            "有限责任公司_台港澳法人独资_",
            "有限责任公司_台港澳非法人经济组织独资_",
            "有限责任公司_台港澳与外国投资者合资_",
            "其他",
            "股份有限公司",
            "股份有限公司_台港澳与境内合资_未上市_",
            "股份有限公司_台港澳与境内合资_上市_",
            "股份有限公司_台港澳合资_未上市_",
            "股份有限公司_台港澳合资_上市_",
            "股份有限公司_台港澳与外国投资者合资_未上市_",
            "股份有限公司_台港澳与外国投资者合资_上市_",
            "其他",
            "非公司",
            "非公司台_港_澳企业_台港澳与境内合作_",
            "非公司台_港_澳企业_台港澳合资_",
            "其他",
            "台_港_澳投资合伙企业",
            "普通合伙企业",
            "特殊普通合伙企业",
            "有限合伙企业",
            "其他",
            "台_港_澳投资企业分支机构",
            "分公司",
            "非公司台_港_澳投资企业分支机构",
            "办事处",
            "台_港_澳投资合伙企业分支机构",
            "其他",
            "外国_地区）企业",
            "外国_地区）公司分支机构",
            "外国_地区_无限责任公司分支机构",
            "外国_地区_有限责任公司分支机构",
            "外国_地区_股份有限责任公司分支机构",
            "外国_地区_其他形式公司分支机构",
            "外国_地区_企业常驻代表机构",
            "外国_地区_企业在中国境内从事经营活动",
            "分公司",
            "其他",
            "集团",
            "内资集团",
            "外资集团",
            "其他类型",
            "农民专业合作社",
            "农民专业合作社分支机构",
            "个体工商户",
            "自然人",
            "其他"
    };

    public static void main(String[] args) {
        for (String s : str) {
            System.out.println(getPingYin(s));

        }
    }
    public static String getPingYin(String src) {
        char[] charArray = src.toCharArray();
        // 单个字的多个音组成的数组
        String[] multiPinYinArray;
        HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();
        format.setCaseType(HanyuPinyinCaseType.LOWERCASE);
        format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
        format.setVCharType(HanyuPinyinVCharType.WITH_V);
        StringBuilder result = new StringBuilder();
        try {
            for (char c : charArray) {
                //判断是否为汉字字符
                if (Character.toString(c).matches("[\\u4E00-\\u9FA5]+")) {
                    multiPinYinArray =
                            PinyinHelper.toHanyuPinyinStringArray(c, format);
                    String word = multiPinYinArray[0];
                    result.append(word.substring(0, 1).toUpperCase())
                            .append(word.substring(1));
                } else {
                    result.append(c);
                }
            }
            return result.toString();
        } catch (BadHanyuPinyinOutputFormatCombination e1) {
            e1.printStackTrace();
        }
        return result.toString();
    }


    public static String toFirstChar(String chinese){
        String pinyinStr = "";
        char[] newChar = chinese.toCharArray();  //转为单个字符
        HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
        defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
        defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
        for (int i = 0; i < newChar.length; i++) {
            if (newChar[i] > 128) {
                try {
                    pinyinStr += PinyinHelper.toHanyuPinyinStringArray(newChar[i], defaultFormat)[0].charAt(0);
                } catch (BadHanyuPinyinOutputFormatCombination e) {
                    e.printStackTrace();
                }
            }else{
                pinyinStr += newChar[i];
            }
        }
        return pinyinStr;
    }

    /**
     * 汉字转为拼音
     * @param chinese
     * @return
     */
    public static String toPinyin(String chinese){
        String pinyinStr = "";
        char[] newChar = chinese.toCharArray();
        HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
        defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
        defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
        for (int i = 0; i < newChar.length; i++) {
            if (newChar[i] > 128) {
                try {
                    pinyinStr += PinyinHelper.toHanyuPinyinStringArray(newChar[i], defaultFormat)[0];
                } catch (BadHanyuPinyinOutputFormatCombination e) {
                    e.printStackTrace();
                }
            }else{
                pinyinStr += newChar[i];
            }
        }
        return pinyinStr;
    }
}
